[iOS 8] App Extensionでテンション倍増! – Share Extension編
アプリ内からコンテンツの受け渡しができる
iOS 7までは、あるアプリからデータを他のアプリに受け渡すには、iCloud などの外部サーバや、URL Scheme 等を使う必要がありました。一度自分のアプリから離れてしまうと、データの受け渡しについて不自由さがあったのが実情でした。
この度 iOS 8 においては、データ受け渡しの仕組みにおいて、大幅に自由度が高まりました。
様々なデータを受け渡すことができる
Xcode 6上で File > New > Target > Share Extension と選択していくと、プロジェクトに Share Extension を実現するためのコードが追加されます。
新しく追加された info.plist を見てみましょう。
NSExtensionActivationRule の中に、extension に関する設定を書き込むことができます
例えば、以下の様な形になります。
<dict> <key>NSExtensionAttributes</key> <dict> <key>NSExtensionActivationRule</key> <dict> <key>NSExtensionActivationSupportsImageWithMaxCount</key> <integer>5</integer> <key>NSExtensionActivationSupportsMovieWithMaxCount</key> <integer>1</integer> <key>NSExtensionActivationSupportsText</key> <false/> <key>NSExtensionActivationSupportsWebURLWithMaxCount</key> <integer>5</integer> </dict> <key>NSExtensionPointName</key> <string>com.apple.share-services</string> <key>NSExtensionPointVersion</key> <string>1.0</string> </dict>
共有できるデータの種類を設定できます。
画像、動画、テキスト、URLなどを受け渡しできます。
また、WithMaxCountで終わる Key は、いくつまで共有できるかを指定できるようになっています。
例えば extension で10枚の画像を共有したい場合は、以下のような記述が必要になります。
<key>NSExtensionActivationSupportsImageWithMaxCount</key> <integer>10</integer>
Share extension を実際に使用する
ここでは、Safari 上で Share extension を実際に呼び出している様子の一例を見てみます。
Safari画面下部中央の共有のためのボタンをタップします。
新しく表示されたメニューの中に、extension である「share」が表示されていることが確認できます。
多くの可能性を秘めている
さて、この Share Extension はどんな使い道があるでしょう。
例えば、Microsoft社 の OneNote アプリで Share extension を効果的に活用しているようです。
ブラウザ上で OneNoteの Share extension を呼び出すことで、ウェブページの内容を切り抜いて OneNote 上のノートとして活用することを実現しているようです。
OneNote for iOS 8 – Share Extension - YouTube
他にも、データ共有の仕組みを使った、様々な用途が考えられます。
非常に多くの可能性を秘めていると感じます。